<template>
  <div>
    <navigation-bar>
      <div class="searchContent">
        <el-input v-model="examineeName" placeholder="请输入名称" size="mini"
          style="width: 150px; margin-right: 10px"></el-input>
        <custom-button type="search" style="margin-right: 10px" @searchClick="searchClick"></custom-button>
        <custom-button type="reset" style="margin-right: 10px" @resetClick="resetClick"></custom-button>
        <custom-button type="add" style="margin-right: 10px" @addClick="addClick"></custom-button>
        <custom-button type="custom" icon="el-icon-refresh" color="#08A362" style="margin-right: 10px" title="同步His"
          @customClick="customClick"></custom-button>
      </div>
    </navigation-bar>
    <el-row>
      <el-col :span="5">
        <div style="width: 100%">
          <user-list @handleSelectionChange="handleSelectionChange" stage="filter" businessType="his"    ref="userList"  @addClick="addClick"></user-list>
        </div>
      </el-col>
      <el-col :span="19">
        <table-index :dataSource="dataSource" :tableColumns="tableColumns" :btnList="btnList" :pageSize="pageSize"
          :pageCount="pageCount" :pageNo="pageNo" @pageChange="pageChange" @editRow="editRow" @viewRow="viewRow"
          @deleteRow="deleteRow" btnListWidth="200px"></table-index>
      </el-col>
    </el-row>
    <div v-if="dialogShow">
      <custom-dialog :title="dialogTitle" size="large" @dialogClose="dialogClose">
        <form-index :formConfig="formConfig" @submit="submit" :type="type">
        </form-index>
      </custom-dialog>
    </div>
  </div>
</template>

<script>
import { HisInspectionForm } from '@/assets/form/managementCenter/subjectManagement/filteringPeriodManagement/HisInspectionForm'
import customDialog from '@/components/customComponents/customDialog'
import customButton from '@/components/customComponents/customForm/customButton'
import formIndex from '@/components/customComponents/customForm/formIndex'
import tableIndex from '@/components/customComponents/customeTable/tableIndex'
import navigationBar from '@/components/customComponents/managementCenter/navigationBar'
import userList from '@/components/customComponents/managementCenter/userList'
import { AjaxCommon } from '@/libs/apiCommon'
import { PopupCommon } from '@/libs/popupCommon'
import { SessionCommon } from '@/libs/sessionCommon'
export default {
  components: {
    navigationBar,
    customButton,
    tableIndex,
    customDialog,
    formIndex,
    userList,
  },
  data() {
    return {
      examineeCodeList: [],
      leftSelectIds: [],
      leftDataSource: [],
      leftTableColumns: [
        {
          prop: 'examineeName',
          label: '受试者姓名',
        },
      ],
      examineeName: '',

      // table 相关参数  begin
      dataSource: [],
      tableColumns: [
        {
          prop: 'filterNo',
          label: '筛选号',
          width: 100,
        },
        {
          prop: 'examineeName',
          label: '受试者姓名',
          width: 120,
        },
        {
          prop: 'sex',
          label: '性别',
          dictName: 'sex',
          width: 100,
        },
        {
          prop: 'isCs',
          label: '临床意义',
          width: 100,
          dictName: 'yn',
        },
        {
          prop: 'checkItemName',
          label: '检查项名称',
          width: 120,
        },
        {
          prop: 'checkItemResultDesc',
          label: '检查结果',
          width: 120,
        },
        {
          prop: 'createTime',
          label: '报告时间',
          width: 160,
        },
        {
          prop: 'createByName',
          label: '记录人',
          width: 100,
        },
        {
          prop: 'checkDesc',
          label: '备注',
          width: 300,
        },
      ],
      btnList: ['edit', 'view', 'delete'],
      pageSize: 20,
      pageCount: 100,
      pageNo: 1,
      // table 相关参数  end

      // 弹窗是否显示
      dialogShow: false,
      // 弹窗标题 (新增修改不同)
      dialogTitle: '',

      // form的配置信息
      formConfig: HisInspectionForm,
      type: 'add',
    }
  },
  methods: {
    customClick(d) {
      if (d == '同步His') {
        PopupCommon.confirm('是否准备开始同步His？')
          .then(() => {
            PopupCommon.notify('info', '调用接口,暂无接口')
          })
          .catch(() => { })
      }
    },
    submit(d) {
      let self = this
      if (d.id) {
        AjaxCommon('/ccdc/pm/em/filter/emFilterHisCheck/edit', 'post', d)
          .then((res) => {
            if (res.data.code == 200) {
              PopupCommon.notify('success', '操作成功')
              this.$refs.userList.refresh()
              self.initPage()
              self.dialogClose()
            } else {
              PopupCommon.notify('error', res.data.message)
            }
          })
          .catch((err) => {
            PopupCommon.notify('error', err.message)
          })
      } else {
        d.examineeCode = self.leftSelectIds[0].examineeCode
        d.examineeEn = self.leftSelectIds[0].examineeEn
        d.examineeName = self.leftSelectIds[0].examineeName
        d.filterNo = self.leftSelectIds[0].filterNo
        d.groupSeq = self.leftSelectIds[0].groupSeq
        d.randomNo = self.leftSelectIds[0].randomNo

        d.drugSeq = self.leftSelectIds[0].drugSeq
        d.sex = self.leftSelectIds[0].sex
        delete d.id
        AjaxCommon('/ccdc/pm/em/filter/emFilterHisCheck/add', 'post', d)
          .then((res) => {
            if (res.data.code == 200) {
              PopupCommon.notify('success', '操作成功')
              this.$refs.userList.refresh()
              self.initPage()
              self.dialogClose()
            } else {
              PopupCommon.notify('error', res.data.message)
            }
          })
          .catch((err) => {
            PopupCommon.notify('error', err.message)
          })
      }
    },
    dialogClose() {
      this.dialogShow = false
			this.$refs.userList.handleClearTableRow()
    },
    searchClick() {
      this.pageNo = 1
      this.initPage()
    },
    resetClick() {
      this.examineeName = ''
    },
    addClick() {
      if (this.leftSelectIds.length != 1) {
        PopupCommon.notify('info', '请勾选一个受试者')
        return
      }
      let formConfigItem = this.formConfig
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == 'fieldName') {
            if (t[res] == 'examineeCode') {
              t.filedValue = this.leftSelectIds[0].examineeCode
            } else if (t[res] == 'examineeName') {
              t.filedValue = this.leftSelectIds[0].examineeName
            } else if (t[res] == 'filterNo') {
              t.filedValue = this.leftSelectIds[0].filterNo
            } else {
              t.filedValue = ''
            }
          }
        })
      })
      formConfigItem.groupId = this.leftSelectIds[0].id
      this.formConfig = formConfigItem

      this.type = 'add'
      this.dialogShow = true
      this.dialogTitle =
        '新增' + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    // 分页点击事件
    pageChange(p) {
      this.pageNo = p
      this.initPage()
    },
    editRow(d) {
      this.type = 'edit'
      let formConfigItem = this.formConfig
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == 'fieldName') {
            t.filedValue = d.data[t[res]]
          }
        })
      })
      this.formConfig = formConfigItem
      this.dialogShow = true
      this.dialogTitle =
        '编辑' + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    viewRow(d) {
      this.type = 'look'
      let formConfigItem = this.formConfig
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == 'fieldName') {
            t.filedValue = d.data[t[res]]
          }
        })
      })
      this.formConfig = formConfigItem
      this.dialogShow = true
      this.dialogTitle =
        '查看' + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    deleteRow(d) {
      const id = d.data.id
      let self = this
      AjaxCommon(
        '/ccdc/pm/em/filter/emFilterHisCheck/delete?id=' + id,
        'delete', { optReason: d.optReason }
      ).then((res) => {
        console.log(res, 'res...............')
        if (res.data.code == 200) {
          PopupCommon.notify('success', '删除成功')
          this.$refs.userList.refresh()
          self.initPage()
          self.dialogClose()
        } else {
          PopupCommon.notify('error', res.data.message)
        }
      })
    },
    // 左侧选中事件
    handleSelectionChange(d) {
      console.log(d)
      this.leftSelectIds = d
      this.examineeCodeList = d ? d.map((t) => t.examineeCode) : []
      this.initPage()
    },
    // 初始化事件
    initPage() {
      let self = this
      AjaxCommon('/ccdc/pm/em/filter/emFilterHisCheck/listByPage', 'post', {
        examineeName: this.examineeName,
        examineeCodeList: this.examineeCodeList,
        pageNo: this.pageNo,
        pageSize: this.pageSize,
      }).then((res) => {
        if (res.data.code == 200) {
          self.dataSource = res.data.result.records
          self.pageCount = res.data.result.total
        } else {
          PopupCommon.notify('error', res.data.message)
        }
      })
    },
  },
  mounted() {
    this.initPage()
  },
}
</script>

<style></style>
